$(function(){
	
	$('#dg').datagrid({
		onSelect: function(rowIndex,rowData){//选中一行时
			var checkRow = $("#dg").datagrid("getSelections");//获取所有选中选项
//			console.log("数组长度"+checkRow.length);
			if(checkRow.length>1){
				$("#toEdit").linkbutton({	//变为禁用
					disabled:true
				});
				$("#del").linkbutton({
					disabled:true
				});
				$("#toPrivilege").linkbutton({
					disabled:true
				});
			}
		},
		onUnselect: function(rowIndex,rowData){//取消选中一行时
			var checkRow = $("#dg").datagrid("getSelections");
//			console.log("数组长度"+checkRow.length);
			if(checkRow.length<=1){
				$("#toEdit").linkbutton({
					disabled:false
				});
				$("#del").linkbutton({
					disabled:false
				});
				$("#toPrivilege").linkbutton({
					disabled:false
				});
			}
		},
		onSelectAll:function(rows){//全选中
			$("#toEdit").linkbutton({
				disabled:true
			});
			$("#del").linkbutton({
				disabled:true
			});
			$("#toPrivilege").linkbutton({
				disabled:true
			});
		},
		onUnselectAll:function(rows){//取消全选中
			$("#toEdit").linkbutton({
				disabled:false
			});
			$("#del").linkbutton({
				disabled:false
			});
			$("#toPrivilege").linkbutton({
				disabled:false
			});
		}
	});
	
	//取数据
	 var pager=$('#dg').datagrid('getPager');
	 pager.pagination({
        total:0,
        rows : 0,
        pageNumber : 1,
        pageList : [10,20,30],// 可以设置每页记录条数的列表
        onBeforeRefresh: function () {  
        },  
        onSelectPage: function (pageNumber, pageSize) {//分页触发  
            find(pageNumber, pageSize);  //当前页，每页数目
        }
    });
	//默认加载1到10的数据 
	find(1,10);
		
	
	//初始化权限树并加载数据
	$.ajax({
		url:"../role/getPrivilegeTree",
		type:"get",
		async:true,
		contentType:"application/json",
		success:function(data,textStatus,jqXHR){
			
			$("#privilegeTree").tree({
				animate : true,
				checkbox : true
			});
			$("#privilegeTree").tree("loadData",data.treeList);
		},
		 error:function(xhr,textStatus){
			 $.messager.alert('操作提示', '请求出错！', 'error');
		 }
	});
	
	
	
});

//全局变量
var editMethod = 'PUT';

/**
 * 方法描述：分页查询
 * @param pageNumber 当前页 
 * @param pageSize 每页显示条数
 * */
function find(pageNumber, pageSize){
     $("#dg").datagrid('getPager').pagination({pageSize : pageSize, pageNumber : pageNumber});//重置
     $("#dg").datagrid("loading"); //加屏蔽
     var start = (pageNumber-1)*pageSize;
     if(start<0){
    	 start = 0;
     }
     $.ajax({
         type : "get",
         dataType : "json",
         url : "../role/list",
         contentType: "application/x-www-form-urlencoded;charset=utf-8", 
         data : {
        	 'currentPage' : pageNumber,	//当前页
             'showCount' : pageSize,		//每页显示条数
             'currentResult' : start,		//当前记录起始索引
             'keyWord' :　$("#keyWord").val()
         },
         success : function(data) {
             $("#dg").datagrid('loadData',pageData(data.dataList,data.total));//这里的pageData是我自己创建的一个对象，用来封装获取的总条数，和数据，data.rows是我在控制器里面添加的一个map集合的键的名称
             var total =data.total;
             $("#dg").datagrid("loaded"); //移除屏蔽
         },
         error : function(err) {
             $.messager.alert('操作提示', '获取信息失败...请联系管理员!', 'error');
             $("#dg").datagrid("loaded"); //移除屏蔽
         }
     });
 }

//封装分页数据
function pageData(list,total){
    var obj=new Object();
    obj.total=total;
    obj.rows=list;
    return obj;
}

//搜索
function _search(){
	var options = $('#dg').datagrid('getPager').data("pagination").options;  
	var page = options.pageNumber;//当前页数  
	var rows = options.pageSize;//每页的记录数（行数）  
	find(page,rows);
}

//重置条件
function reset(){
	$("#keyWord").val("");
	var options = $('#dg').datagrid('getPager').data("pagination").options;  
	var page = options.pageNumber;//当前页数  
	var rows = options.pageSize;//每页的记录数（行数）  
	find(page,rows);
}

//打开新增窗口
function toAdd(){
	editMethod = 'POST'; 
	$("#fm").form("clear");
	$("#win").window("open").window("setTitle","新增");
} 

//打卡编辑窗口
function toEdit(){
	var	row	= $('#dg').datagrid('getSelected');
	if(row){
		$("#win").window("open").window("setTitle","修改");
		$("#fm").form("clear");
		$('#fm').form('load',row);
		editMethod = "PUT";
	}else{
		$.messager.alert('操作提示','需要选择一条数据进行修改。',"info");
	}
}

//保存
function save(){
	//表单校验
	if($("#fm").form("validate")){
		var formData = { 
				id:$('#id').val(),
				roleName:$('#roleName').val(),
				roleRemark:$('#roleRemark').val()
		};
		$.ajax({
			url:"../role",
			type:editMethod,
			async:true,
			contentType:"application/json",
			data:JSON.stringify(formData),
			dataType:'json',
			success:function(data,textStatus,jqXHR){
				$('#win').window('close');
				var options = $('#dg').datagrid('getPager').data("pagination").options;  
				var page = options.pageNumber;//当前页数  
				var rows = options.pageSize;//每页的记录数（行数）  
				$.messager.alert('操作提示', '保存成功！', 'info');
				find(page,rows);
			},
			 error:function(xhr,textStatus){
				 alert('保存出错.'+textStatus);
			 }
		});
	}
}

//删除
function del(){
	var row = $('#dg').datagrid('getSelected');
	if(row){
		$.messager.confirm('确认','要删除此记录吗?',function(r){
			if(r){
				$("#dg").datagrid("loading"); //加屏蔽
				var formData = { 
						id:row.id
				};
				$.ajax({
					url:"../role",
					type:"delete",
					async:true,
					contentType:"application/json",
					data:JSON.stringify(formData),
					dataType:'json',
					success:function(data,textStatus,jqXHR){
						if(data.success==true){
							$.messager.alert('操作提示', '删除成功！', 'info');
						}else{
							$.messager.alert('操作提示', data.error, 'error');
						}
						var options = $('#dg').datagrid('getPager').data("pagination").options;  
						var page = options.pageNumber;//当前页数  
						var rows = options.pageSize;//每页的记录数（行数）  
						find(page,rows);
					},
					 error:function(xhr,textStatus){
						 $.messager.alert('操作提示', '请求出错！', 'error');
					 }
				});
			}
		});
	}
}

//导出Excel数据
function ext(){
	window.location.href='../role/exportExcel';
}

//打开分配权限窗口
function toPrivilege(){
	var	row	= $('#dg').datagrid('getSelected');	
	if(row){
		//根据角色id加载数据
		$.ajax({
			url:"../role/getPrivilegeByRoleId",
			type:"get",
			async:true,
			contentType:"application/json",
			data:{
				roleId:row.id
			},
			dataType:'json',
			success:function(data,textStatus,jqXHR){
//			  console.log(data.dataList);
			  //先取消树形选项的全部选中状态
			  cancelTreeCheck($('#privilegeTree'));
			  //选中对应的树形选项	
			  for(var i=0;i<data.dataList.length;i++){
				  var node = $('#privilegeTree').tree('find',data.dataList[i].privilegeId);
				  $('#privilegeTree').tree('check', node.target);
			  }
			  $("#privilegeWin").window("open").window("setTitle","分配权限");
			},
			 error:function(xhr,textStatus){
				 $.messager.alert('操作提示', '请求出错！', 'error');
			 }
		});
	}else{
		$.messager.alert('操作提示','需要选择一条数据进行分配权限。',"info");
	}
	
}

//保存权限分配
function savePrivilege(){
	var	row	= $('#dg').datagrid('getSelected');	
	var nodes = $('#privilegeTree').tree('getChecked');
	var privilegeStr = '';
	if(nodes.length<=0){
		return $.messager.alert('操作提示','请选择一条权限数据。',"info");
	}
	for(var i=0; i<nodes.length; i++){
		if(privilegeStr != ""){
			privilegeStr += ',';
		}
		privilegeStr += nodes[i].id;
	}
	var formData = { 
		roleId:row.id,
		privilegeStr:privilegeStr
	};
	$.ajax({
		url:"../role/savePrivilegeRole",
		type:"post",
		async:true,
		contentType:"application/json",
		data:JSON.stringify(formData),
		dataType:'json',
		success:function(data,textStatus,jqXHR){
//			console.log(data);
			if(data.success==true){
				$.messager.alert('操作提示', '操作成功！', 'info');
			}else{
				$.messager.alert('操作提示', '操作出错！', 'error');
			}
			$('#privilegeWin').window('close');
		},
		 error:function(xhr,textStatus){
			 $.messager.alert('操作提示', '请求出错！', 'error');
		 }
	});
}

/**
 * 取消所有选中的树形选项
 * @param treeObj 树选项 如：$("#privilegeTree")
 * */
function cancelTreeCheck(treeObj){
	var rootNodes = treeObj.tree('getRoots');
	for(var i=0;i<rootNodes.length;i++){
		var node = treeObj.tree("find",rootNodes[i].id);
		treeObj.tree("uncheck",node.target);
	}
	
}
